package jdk5;

import java.io.IOException;
import java.io.PrintStream;
import java.util.EnumMap;

public class Enum {

	enum AntStatus {
		INITIALIZING, COMPILING, COPYING, JARRING, ZIPPING, DONE, ERROR
	}

	// EnumMap
	public void testEnumMap(PrintStream out) throws IOException {
		// Create a map with the key and a String message
		EnumMap<AntStatus, String> antMessages = new EnumMap<AntStatus, String>(AntStatus.class);
		// Initialize the map
		antMessages.put(AntStatus.INITIALIZING, "Initializing Ant...");
		antMessages.put(AntStatus.COMPILING, "Compiling Java classes...");
		antMessages.put(AntStatus.COPYING, "Copying files...");
		antMessages.put(AntStatus.JARRING, "JARring up files...");
		antMessages.put(AntStatus.ZIPPING, "ZIPping up files...");
		antMessages.put(AntStatus.DONE, "Build complete.");
		antMessages.put(AntStatus.ERROR, "Error occurred.");
		// Iterate and print messages
		for (AntStatus status : AntStatus.values()) {
			out.println("For status " + status + ", message is: " + antMessages.get(status));
		}
	}

	// switch枚举
	enum Description {
		ROSEWOOD, MAHOGANY, ZIRICOTE, SPRUCE, CEDAR, AB_ROSETTE, AB_TOP_BORDER, IL_DIAMONDS, IL_DOTS;

		public String getDescription() {
			switch (this) {
			case ROSEWOOD:
				return "Rosewood back and sides";
			case MAHOGANY:
				return "Mahogany back and sides";
			case ZIRICOTE:
				return "Ziricote back and sides";
			case SPRUCE:
				return "Sitka Spruce top";
			case CEDAR:
				return "Wester Red Cedar top";
			case AB_ROSETTE:
				return "Abalone rosette";
			case AB_TOP_BORDER:
				return "Abalone top border";
			case IL_DIAMONDS:
				return "Diamonds and squares fretboard inlay";
			case IL_DOTS:
				return "Small dots fretboard inlay";
			default:
				return "Unknown feature";
			}
		}
	}

	public static void main(String[] args) {
		String description = Description.ROSEWOOD.getDescription();
		System.out.println(description);
	}
}
